home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Collection of Tools & Utilities
/
Collection of Tools and Utilities.iso
/
keyb
/
dce.zip
/
DCESUBS.SRC
< prev
next >
Wrap
Text File
|
1989-02-06
|
59KB
|
1,821 lines
' ***** DCE ** (C)1988-89, by GNA. *****
'═════════════════════════════════════════════════════════════════════════════
' *** waiting for a keyhit ***
ATTEND:
A$=""
WHILE A$=""
' *** display special keys state ***
IF Ins=1 THEN
LOCATE 25,61:COLOR 0,7:PRINT "Ins";
ELSE
LOCATE 25,61:COLOR 0,1:PRINT "Ins";
END IF
REG %AX,&H0200
CALL INTERRUPT &H16
IF (REG(%AX) AND 64)=64 THEN
LOCATE 25,65:COLOR 0,7:PRINT "Caps";
ELSE
LOCATE 25,65:COLOR 0,1:PRINT "Caps";
END IF
IF (REG(%AX) AND 32)=32 THEN
LOCATE 25,70:COLOR 0,7:PRINT "Num";
ELSE
LOCATE 25,70:COLOR 0,1:PRINT "Num";
END IF
IF (REG(%AX) AND 16)=16 THEN
LOCATE 25,74:COLOR 0,7:PRINT "Scroll";
ELSE
LOCATE 25,74:COLOR 0,1:PRINT "Scroll";
END IF
' *** help ? ***
LOCATE 1,53
IF FlgAidePos=0 THEN
COLOR 7,0:PRINT SPACE$(9);
ELSE
COLOR 12,0:PRINT "[F1] Help";
END IF
' *** date & hour on right top of screen ***
LOCATE 1,72:COLOR 0,7:PRINT TIME$;
LOCATE 1,63:COLOR 0,7:PRINT LEFT$(DATE$,6)+RIGHT$(DATE$,2)
' *** alarm ? ***
IF Alarme$=Depr$ THEN
LOCATE 2,72:COLOR 11,0:PRINT STRING$(8,CHR$(196));
ELSE
IF Alarme$>LEFT$(TIME$,5) THEN
LOCATE 2,72:COLOR 11,0:PRINT "[Alarm!]";
ELSE
' *** starting bell ***
LOCATE 2,72:COLOR 27,0:PRINT "[Alarm!]";
IF FlgBell=0 THEN
SOUND 440,1100:ZAlrm=INT(TIMER):FlgBell=1
ELSE
' *** user stop bell ***
IF FlgBellStop=1 THEN
IF (INT(TIMER)-ZAlrm)<60 THEN
SOUND 440,1100-INT((INT(TIMER)-ZAlrm)*18.2)
END IF
FlgBellStop=0
END IF
' *** bell autostop after a minute ***
IF (INT(TIMER)-ZAlrm)>60 THEN
Alarme$=Depr$:SOUND 440,0:FlgBell=0
IF (FlgAlrm=1 AND Prog=0) THEN
LOCATE 13,31:COLOR 0,7:PRINT Deprog$;
END IF
END IF
' *** flashing screen three seconds ***
IF ((INT(TIMER)-ZAlrm)<3 OR FlgBell=-1) THEN
FlgBell=-FlgBell
IF FlgBell=-1 THEN REG %AX,&H0501 ELSE REG %AX,&H0500
CALL INTERRUPT &H10
END IF
END IF
END IF
END IF
' *** keyboard buffer scan ***
A$=INKEY$
IF (A$=CHR$(13) AND FlgBell<>0) THEN SOUND 440,0:FlgBellStop=1
' *** branch on full screen clock if any ***
IF FlgHorl=1 THEN GOSUB AFFICHEURE
WEND
' *** assumes screen in right mode ***
REG %AX,&H0500
CALL INTERRUPT &H10
RETURN
'═════════════════════════════════════════════════════════════════════════════
' *** display full screen : last cde, date, hour, directory ***
ECRAN:
' *** disk drive letter ***
REG %AX,&H1900
CALL INTERRUPT &H21
X%=(REG(%AX) AND &HFF)+1
Disk$=CHR$(&H40+X%)
' *** directory in use ***
REG %AX,&H4700
REG %DS,Segment&
REG %SI,Offset&
REG %DX,X%
CALL INTERRUPT &H21
' *** top and bottom lines of screen ***
LOCATE 1,1:COLOR 7,0:PRINT SPACE$(80);
LOCATE 1,2:COLOR 14,0:PRINT Logiciel$+CHR$(32)+"="+CHR$(32);
LOCATE 2,1:COLOR 11,0:PRINT STRING$(80,196);
LOCATE 25,1:COLOR 14,1:PRINT SPACE$(80);
LOCATE 25,2:COLOR 14,1:PRINT Logiciel$+CHR$(32)+"="+CHR$(32);
LOCATE 25,56:COLOR 14,1:PRINT "V"+Vers$;
' *** troncated string if too long ... ***
LOCATE 1,Marge:COLOR 7,0
IF LEN(Temp$)>41 THEN
PRINT LEFT$(Temp$,41);"...";
ELSE
PRINT Temp$;
END IF
' *** write used drive name ***
LOCATE 2,2:COLOR 11,0:PRINT "Dir"+CHR$(32)+"="+CHR$(32);
COLOR 7,0:PRINT Disk$+":\";
' *** write current path (ASCIIZ string) ***
DEF SEG=Segment&
Y&=Offset&
WHILE PEEK(Y&)<>0
PRINT CHR$(PEEK(Y&));:Y&=Y&+1
WEND
DEF SEG
' *** there is no RETURN here !!! ***
'═════════════════════════════════════════════════════════════════════════════
' *** write command line and put cursor ***
ECRIT:
IF LEN(DebCde$)<%MaxLig-1 THEN
IF LEN(DebCde$+FinCde$)>%MaxLig-1 THEN
LOCATE 25,Marge
COLOR 11,1:PRINT DebCde$;LEFT$(FinCde$,%MaxLig-LEN(DebCde$));
ELSE
LOCATE 25,Marge:COLOR 11,1:PRINT DebCde$;FinCde$;
END IF
Posit=Marge+LEN(DebCde$)
ELSE
IF LEN(FinCde$)>0 THEN
LOCATE 25,Marge:COLOR 11,1
PRINT RIGHT$(DebCde$,%MaxLig-1);LEFT$(FinCde$,1);
ELSE
LOCATE 25,Marge:COLOR 11,1:PRINT RIGHT$(DebCde$,%MaxLig-1);
END IF
Posit=Marge+%MaxLig-1
END IF
IF LEN(DebCde$+FinCde$)<%MaxLig+1 THEN
LOCATE 25,Marge+LEN(DebCde$+FinCde$):COLOR 11,1
PRINT SPACE$(%MaxLig+1-LEN(DebCde$+FinCde$));
END IF
RETURN
'═════════════════════════════════════════════════════════════════════════════
' *** master help screen activated with [F1] key ***
AIDE:
Debut=320:LongEcr=3520
GOSUB SAUVESCR
PLAY MusiAir$
CALL CADRE(3,8,24,73,0,7,0)
LOCATE 04,21:COLOR 14,0:PRINT "* "+Logiciel$+" : MS-DOS"+SPACE$(2)+_
"Commands"+SPACE$(2)+"line"+SPACE$(2)+_
"Editor *"
LOCATE 06,17:COLOR 15,0:PRINT "[";CHR$(17);CHR$(217);"]";
LOCATE 06,28:COLOR 10,0:PRINT "Accepts and starts command processing, or"
LOCATE 07,28:COLOR 10,0:PRINT "alone : go to MS-DOS (EXIT to return)"
LOCATE 08,15:COLOR 15,0:PRINT "[";CHR$(27);"], [";CHR$(26);"]";
LOCATE 08,28:COLOR 10,0:PRINT "Moves cursor left, right"
LOCATE 09,12:COLOR 15,0:PRINT "[Home], [End]";
LOCATE 09,28:COLOR 10,0:PRINT "Beginning, end of current command line"
LOCATE 10,17:COLOR 15,0:PRINT "[";CHR$(17);CHR$(205);"]";
LOCATE 10,28:COLOR 10,0:PRINT "Erases the preceeding cursor character"
LOCATE 11,13:COLOR 15,0:PRINT "[Ins], [Del]";
LOCATE 11,28:COLOR 10,0:PRINT "Insert/Overwrite, Erases the under cursor"
LOCATE 12,28:COLOR 10,0:PRINT "character"
LOCATE 13,14:COLOR 15,0:PRINT "[F9], [F10]";
LOCATE 13,28:COLOR 10,0:PRINT "Erases the beginning, the end of command"
LOCATE 14,15:COLOR 15,0:PRINT "[";CHR$(24);"], [";CHR$(25);"]";
LOCATE 14,28:COLOR 10,0:PRINT "Displays Prior, Next memorized command"
LOCATE 15,12:COLOR 15,0:PRINT "[PgUp], [PgDn]";
LOCATE 15,28:COLOR 10,0:PRINT "To the First memorized, New command"
LOCATE 16,17:COLOR 15,0:PRINT "[Esc]";
LOCATE 16,28:COLOR 10,0:PRINT "To quit"+SPACE$(2)+Logiciel$+","+SPACE$(2)+_
"return"+SPACE$(2)+"to system"+SPACE$(2)+_
"and exit"
LOCATE 17,28:COLOR 10,0:PRINT "from function or stop the Bell"
LOCATE 19,11:COLOR 15,0:PRINT "[F2], [F3], [F4]";
LOCATE 19,28:COLOR 12,0:PRINT "ASCII table, Calendar, Calculator"
LOCATE 20,14:COLOR 15,0:PRINT "[F5], [F6]";
LOCATE 20,28:COLOR 12,0:PRINT "Programming Alarm, Looking at Alarm"
LOCATE 21,14:COLOR 15,0:PRINT "[F7], [F8]";
LOCATE 21,28:COLOR 12,0:PRINT "Semi-graphics table, Full screen Clock"
LOCATE 23,31:COLOR 07,0:PRINT "[Esc]"+CHR$(32)+Retour$+CHR$(32)+Logiciel$
A$=""
WHILE A$<>CHR$(27)
FlgAidePos=0
GOSUB ATTEND
IF A$<>CHR$(27) THEN
IF FlgBell=0 THEN PLAY MusiErr$
ELSE
IF FlgBell<>0 THEN SOUND 440,0:Alarme$=Depr$:FlgBell=0:A$=""
END IF
WEND
GOSUB RESTSCR
RETURN
'═════════════════════════════════════════════════════════════════════════════
' *** ASCII table ***
ASCII:
Debut=640:LongEcr=2880
GOSUB SAUVESCR
' *** a few peculiar variables ***
L=-1:Texte$="ASCII CHARACTERS SET"
' *** a beautiful window at screen ***
CALL CADRE(5,1,22,80,0,11,2)
CALL CADRE(6,23,8,57,1,11,2)
LOCATE 20,52:PRINT CHR$(218)+STRING$(27,196)+CHR$(182);
LOCATE 21,52:PRINT CHR$(179):LOCATE 22,52:PRINT CHR$(207)
LOCATE